import html2Canvas from 'html2canvas'
import Vue from 'vue'
import JsPDF from 'jspdf'
// import store from '../store/index'
import { Loading } from 'element-ui'

// 导出页面为PDF格式
// import html2Canvas from 'html2canvas'
// import jsPDF from 'jspdf'
// export default{
//   install (Vue, options) {
//     Vue.prototype.getPdf = function () {
//       var ST = document.documentElement.scrollTop || document.body.scrollTop;
//       var SL = document.documentElement.scrollLeft || document.body.scrollLeft;
//       document.body.scrollLeft = 0
//       document.documentElement.scrollLeft = 0;
//       document.body.scrollTop = 0;
//       document.documentElement.scrollTop = 0;
      
//       const loading = Loading.service({
//         lock: true,
//         text: '导出中,请稍后...',
//         spinner: 'el-icon-loading',
//         background: 'rgba(255, 255, 255, 0.7)'
//       });
//       var title = '持续交付月报'
//       //console.log(document.querySelector("#pdfDom").parentElement);
//       html2Canvas(document.querySelector('#pdfDom'), {
//         allowTaint: true,
//       }).then(function (canvas) {
//         document.documentElement.scrollTop = ST;
//         document.body.scrollTop = ST;
//         document.documentElement.scrollLeft = SL;
//         document.body.scrollLeft = SL;
//         var pdf = new JsPDF('p', 'mm', 'a4');    //A4纸，纵向
//         var ctx = canvas.getContext('2d')
//         //console.log('')
//         var a4w = 190, a4h = 277    //A4大小，210mm x 297mm，四边各保留10mm的边距，显示区域190x277
//         var imgHeight = Math.floor(a4h * canvas.width / a4w)   //按A4显示比例换算一页图像的像素高度
//         var renderedHeight = 0;
//           while(renderedHeight < canvas.height) {
//               var ctx = canvas.getContext("2d");
//               // ctx.font = "100px 微软雅黑";
//               // ctx.fillStyle = "rgba(81, 90, 110, 0.3)";
//               // ctx.fillText('项目看板', 430, 600);
//               // ctx.fillText('项目看板', 430, 1400);
//               var page = document.createElement("canvas");
//               page.width = canvas.width;
//               page.height = Math.min(imgHeight, canvas.height - renderedHeight);//可能内容不足一页
//               //用getImageData剪裁指定区域，并画到前面创建的canvas对象中
//               page.getContext('2d').putImageData(ctx.getImageData(0, renderedHeight, canvas.width, Math.min(imgHeight, canvas.height - renderedHeight)), 0, 0);
//               // console.log(page.toDataURL('image/jpeg', 1.0))
//               pdf.addImage(page.toDataURL('image/jpeg', 1.0), 'JPEG', 10, 10, a4w, Math.min(a4h, a4w * page.height / page.width));    //添加图像到页面，保留10mm边距
//               renderedHeight += imgHeight;
//               if(renderedHeight < canvas.height) {
//                 pdf.addPage();//如果后面还有内容，添加一个空页
//               }
//           }
//           loading.close();
//           pdf.save(title + '.pdf');
//       }
//       )
//     }
//   }
// }

export default {
  install (Vue, options) {
    Vue.prototype.getPdf = function (title) {
      window.pageYOffset = 0;
      document.body.scrollLeft = 0
      document.documentElement.scrollLeft = 0;
      document.documentElement.scrollTop = 0
      document.body.scrollTop = 0
      const loading = Loading.service({
        lock: true,
        text: '导出中,请稍后...',
        spinner: 'el-icon-loading',
        background: 'rgba(255, 255, 255, 0.7)'
      });

      // var title = '持续交付月报'
      // store.commit('setinputStatus', false)
      html2Canvas(document.querySelector('#pdfDom'), {
        allowTaint: true,
        useCORS: true
       }).then(function (canvas) {
        let contentWidth = canvas.width
        let contentHeight = canvas.height
        let pageHeight = contentWidth / 592.28 * 841.89
        let leftHeight = contentHeight
        let position = 0
        let imgWidth = 595.28
        let imgHeight = 592.28 / contentWidth * contentHeight
        let pageData = new Image();
        //设置图片跨域访问
        pageData.setAttribute('crossOrigin', 'Anonymous');

        setTimeout(() => {
            pageData = canvas.toDataURL('image/jpeg', 1.0);
            let PDF = new JsPDF('', 'pt', 'a4')
            if (leftHeight < pageHeight) {
                PDF.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight)
            } else {
                while (leftHeight > 0) {
                    PDF.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
                    leftHeight -= pageHeight
                    position -= 841.89
                    if (leftHeight > 0) {
                        PDF.addPage()
                    }
                }
            }
            loading.close();
            // store.commit('setpdfStatus', false)           
            PDF.save(title + '.pdf')
        }, 1500)
//         //未生成pdf的html页面高度
//       //   var leftHeight = canvas.height;
 
//       //   var a4Width = 595.28
//       //   var a4Height = 841.89
//       //   //一页pdf显示html页面生成的canvas高度;
//       //   var a4HeightRef = Math.floor(canvas.width / a4Width * a4Height);

//       //   //pdf页面偏移
//       //   var position = 0;

//       //   var pageData = canvas.toDataURL('image/jpeg', 1.0);

//       //   var pdf = new JsPDF('x', 'pt', 'a4');
//       //   var index = 1,
//       //   canvas1 = document.createElement('canvas'),
//       //   height;
//       //   pdf.setDisplayMode('fullwidth', 'continuous', 'FullScreen');

//       //   var pdfName='持续交付月报'
//       //   function createImpl(canvas) {
//       //     if (leftHeight > 0) {
//       //         index++;

//       //         var checkCount = 0;
//       //         if (leftHeight > a4HeightRef) {
//       //             var i = position + a4HeightRef;
//       //             for (i = position + a4HeightRef; i >= position; i--) {
//       //                 var isWrite = true
//       //                 for (var j = 0; j < canvas.width; j++) {
//       //                     var c = canvas.getContext('2d').getImageData(j, i, 1, 1).data

//       //                     if (c[0] != 0xff || c[1] != 0xff || c[2] != 0xff) {
//       //                         isWrite = false
//       //                         break
//       //                     }
//       //                 }
//       //                 if (isWrite) {
//       //                     checkCount++
//       //                     if (checkCount >= 10) {
//       //                         break
//       //                     }
//       //                 } else {
//       //                     checkCount = 0
//       //                 }
//       //             }
//       //             height = Math.round(i - position) || Math.min(leftHeight, a4HeightRef);
//       //             if(height<=0){
//       //                 height = a4HeightRef;
//       //             }
//       //         } else {
//       //             height = leftHeight;
//       //         }

//       //         canvas1.width = canvas.width;
//       //         canvas1.height = height;

//       //         // console.log(index, 'height:', height, 'pos', position);

//       //         var ctx = canvas1.getContext('2d');
//       //         ctx.drawImage(canvas, 0, position, canvas.width, height, 0, 0, canvas.width, height);

//       //         var pageHeight = Math.round(a4Width / canvas.width * height);
//       //        // pdf.setPageSize(null, pageHeight)
//       //         if(position != 0){
//       //             pdf.addPage();
//       //         }
//       //         pdf.addImage(canvas1.toDataURL('image/jpeg', 1.0), 'JPEG', 0, 0, a4Width, a4Width / canvas1.width * height);
//       //         leftHeight -= height;
//       //         position += height;
//       //         // $('.pdfProgress').text(index + 1);
//       //         // $('.pdfTotal').text(index + Math.ceil(leftHeight / a4HeightRef));              
//       //         if (leftHeight > 0) {
//       //             setTimeout(createImpl, 500, canvas);
//       //             setTimeout(() => {
//       //               loading.close()
//       //             }, 700)
//       //         } else {
//       //             pdf.save(pdfName + '.pdf'); 
//       //             loading.close()   
//       //             // $('.pdfTip').remove();
//       //         }
//       //     }
//       // }

//       // //当内容未超过pdf一页显示的范围，无需分页
//       // if (leftHeight < a4HeightRef) {
//       //     pdf.addImage(pageData, 'JPEG', 0, 0, a4Width, a4Width / canvas.width * leftHeight);
//       //     pdf.save(pdfName + '.pdf')
//       //     loading.close()
//       // } else {
//       //     try {
//       //         pdf.deletePage(0);              
//       //         // $('.pdfTip').show();
//       //         // $('.pdfTotal').text(index + Math.ceil(leftHeight / a4HeightRef));
//       //         setTimeout(createImpl, 500, canvas);
//       //         setTimeout(() => {
//       //           loading.close()
//       //         }, 700)
//       //         // loading.close()
//       //     } catch (err) {
//       //         console.log(err);
//       //     }
//       // }

      }
      )
    }
  }
}